Date: Wed, 20 Nov 1996 23:18:10 GMT
Server: NCSA/1.5
Content-type: text/html

<html>
<head>
<title> Fall 1995 Course Announcement </title>
</head>
<body>
<h1> <!WA0><IMG align=middle SRC="http://www.cs.uiowa.edu/~fleck/193-logo.gif" ALT="intriguing graphic logo">
Fall 1995 Course Announcement <br>
22C:193 Logic Programming </h1>
<p>
Instructor: <!WA1><a href="http://www.cs.uiowa.edu/~fleck/index.html"> Arthur C. Fleck</a> <br>
Time/place: 9:30 am MWF / 113 MLH <br>
Text: Sterling & Shapiro, The Art of Prolog, 2nd ed., MIT Press, 1994.
<p>
<h2> Course overview </h2>
The goal of logic programming is to allow us to specify what properties a 
correct solution to a problem must possess, and then automatically deduce 
the solution without further "programming".  It is a unique paradigm suitable 
for many non-numeric applications, 
and has connections with a variety of areas of computer science including 
automatic theorem proving, deductive database, and various AI applications 
such as natural language processing, expert systems, and knowledge 
representation.  The principal focus 
of this course will be on the semantics and pragmatics of Prolog programming, 
and its aptness for logic programming.
<p>
General background from the formal prerequisites 22C:21 and 22C:23 will be 
assumed.  There will be no prior knowledge of logic programming required, 
necessary background for course topics will be developed.  It will be assumed 
that the student has experience 
with several programming languages, and especially that recursion is a familiar 
concept.  Please note that undergraduate majors can select this course as one 
of the two advanced CS courses required for the B.S. degree.  
<p>
The course will involve both conceptual and project work.  The projects 
will be of 
modest size and will use Prolog and possibly other logic languages for which 
implementations can be obtained.  A tentative listing below indicates the 
range of topics.  
It will not be possible to provide a complete treatment of all these topics, 
so some will be touched on only briefly.
<p>
<h2> Tenative topic list </h2>
<ol>
<li> Overview of Prolog and the philosophy of logic programming
<p>
<li> Substitutions & unification
<p>
<li> Horn clause logic
<ul>
<li> proof theory - resolution
<li> model theory semantics
<li> computability
</ul>
<p>
<li> Prolog semantics
<ul>
<li> procedural semantics
<li> WAM(Warren's Abstract Machine) code
</ul>
<p>
<li>Logic programming vs. Prolog programming
<ul>
<li> arithmetic & 'is'
<li> occur-check
<li> cut
<li> assert/retract
<li> higher-order features(e.g., call, findall)
<li> negation, CWA, & NAF
<li> difference lists
</ul>
<p>
<li> Logic grammars
<ul>
<li> translation to Prolog clauses
<li> programming language and natural language analysis
</ul>
<p>
<li> Unifying functional & logic programming
<ul>
<li> equational logic
<li> rewriting systems
<li> narrowing
</ul>
</ol>
<p> For further Web information on logic programming see the 
<!WA2><a href="http://www.comlab.ox.ac.uk/archive/logic-prog.html"> 
WWW logic programming page.</a>
</body>
</html>
